package MAIN;

import java.util.Scanner;
import java.util.Stack;

//笔试强训第6天

//选择题
/*最终类和密封类就是被final修饰的类，被声明使用就是 A a，并没有new对象，抽象类可以没有抽象方法，
* 密封类也可以没有密封方法，*/
/*抽象方法是不能有具体的方法的实现的，包括不能写{}*/
/*数组的length是没有（）的，字符串的length是有（）的*/
/*default是包访问权限*/
/*构造方法是可以重载的，一个类中可以有多个构造方法*/

public class Main6 {
    //把字符串转换成一个整数
    /*思路：  首先先分成三种情况，有＋，有-，还有字符串中包含字母（不合法的整数）
    1. 判断字符串是否为空，2. 判断正负号是否有，如果有就先把他转化为字符0（因为字符0对下面的公式是没有影响的）
    3. 看字符串是否是合法的整数（是否包含字母），如果包含，要记得先把sum置为0，然后break
    需要注意的点：1.在把0下标的字符转换为字符0时，str.charAt是不支持的，所以只能转化为字符数组再把0下标的改成字符0
                2.下面字符串转化成整数的公式 */
    public int StrToInt(String str) {
        //1.判断是否为空
        if (str == null || str.isEmpty()) {
            return 0;
        }
        //不为空的时候先转换成一个数组
        char[] chs = str.toCharArray();
        int flg = 1;
        if (chs[0] == '-') {
            flg = -1;
            //str.charAt(0) = '0';
            // 此时上一行代码会报错，因为字符串的底层是一个final修饰的数组，
            // 所以先把字符串变成一个字符数组再进行修改
            chs[0] = '0';
        }else if (chs[0] == '+') {
            flg = 1;
            chs[0] = '0';
        }
        int sum = 0;
        for (int i = 0; i < str.length(); i++) {
           if (chs[i] < '0' || chs[i] > '9') {
               sum = 0;
               break;
           }
           //把字符串转换成整数的公式
           sum = sum * 10 + chs[i] - '0';
        }
        return flg * sum;
    }
    //不要二（两点坐标距离的算术平方根不能等于2）
    //思路：根据算数平方根的公式，推导出哪一个坐标是不能放入蛋糕的
    //算数平方根之后是不能=2的，也就是说两个坐标的差的平方不能=4
    //此时就只有2种情况是符合题意的
    //然后用二维数组表示两个坐标轴
    //也就是说如果[i][j]位置放了蛋糕，[i][j+2],[i+2][j]位置就是不能放蛋糕的
    //还要注意此时的i+2可能会数组越界
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int w = scan.nextInt();//控制行数，也就是横坐标
        int h = scan.nextInt();//控制列数，也就是纵坐标
        int count = 0;
        int[][] arr = new int[w][h];
        for (int i = 0; i < w; i++) {
            for (int j = 0; j < h; j++) {
                if (arr[i][j] == 0) {
                    count++;
                    //但是放入第一块蛋糕之后，就有条件了，哪一个坐标是不能放蛋糕的
                    if (i+2 < w) {
                        arr[i+2][j] = 1;
                    }
                    if (j+2 < h) {
                        arr[i][j+2] = 1;
                    }
                }
            }
        }
        System.out.println(count);
    }
}
